package com.study.spark.scala.chapter07

import scala.collection.mutable.ArrayBuffer
import scala.io.{BufferedSource, Source}

object Scala05_Collection{
  def main(args: Array[String]): Unit = {
    // TODO 集合 - 功能函数 - WordCount案列

    // TODO 1.按行读取文件，获取原始数据
    val source: BufferedSource = Source.fromFile("output/test.txt")
    val lines = source.getLines().toArray
    source.close()

    // TODO 2.将每一行的字符串切分
    val words = lines.flatMap(
      str => {
        str.split(" ")
      })

    // TODO 3.将切分好的相同的单词分为一组
    val wordGroup: Map[String, Array[String]] = words.groupBy(str => str)

    // TODO 4.每一组单词进行数量统计
    // 如果在进行数据转换时不涉及k，只是对v进行处理，可以是以mapValues方法
    val wordcount = wordGroup.mapValues(
      str => str.size
    )

    // TODO 5.将统计结果打印输出
    println(wordcount)//Map(Hello -> 2, Spark -> 1, Scala -> 1)

  }
}
